package be.msec.smartcard;

import javacard.framework.Util;

public class UserInfo {
	//0x00 = naam
	//0x01 = adres
	//0x02 = land
	//0x03 = geboortedatum
	//0x04 = leeftijd
	//0x05 = geslacht
	//0x06 = foto
	//0xff = error
	
	//Velden zijn Type-Length-Value (TLV) encoded!!	new byte[]{type, length, value .....};
	public static byte[] naam 			= new byte[]{(byte)0, (byte)9, 'S', 'm', 'i', 't', 'h', ' ', 'J', 'a', 'n'};		//0x00
	public static byte[] adres 			= new byte[]{(byte)1, (byte)19, 'V', 'e', 'l', 'd', 'w', 'e', 'g' ,' ', '2', ',', '9', '0', '0', '0', ' ', 'G', 'e', 'n', 't'};		//0x01
	public static byte[] land 			= new byte[]{(byte)2, (byte)2, 'B', 'E'};											//0x02
	public static byte[] geboortedatum 	= new byte[]{(byte)3, (byte)10 , '0', '1', '/', '0', '1', '/', '1', '9', '9', '0'};	//0x03
	public static byte[] leeftijd 		= new byte[]{(byte)4, (byte)2, '2', '3'};											//0x04
	public static byte[] geslacht 		= new byte[]{(byte)5, (byte)1, 'M'};												//0x05
	public static byte[] error 			= new byte[]{(byte)255, (byte)6 , 'E', 'r', 'r', 'o', 'r', '!'};
	public static byte[] endOfAttributes = new byte[]{(byte)100, (byte)1, (byte)0};
	public static byte[] foto    		= new byte[] {(byte)6, (byte)0x03, (byte)0x9E, (byte) 66,(byte) 77,(byte) -98,(byte) 3,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 62,(byte) 0,(byte) 0,(byte) 0,(byte) 40,(byte) 0,(byte) 0,(byte) 0,(byte) 77,(byte) 0,(byte) 0,(byte) 0,(byte) 72,(byte) 0,(byte) 0,(byte) 0,(byte) 1,(byte) 0,(byte) 1,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 96,(byte) 3,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -128,(byte) 15,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 0,(byte) 0,(byte) 127,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -128,(byte) 0,(byte) 0,(byte) 15,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -2,(byte) 0,(byte) 0,(byte) 0,(byte) 3,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -32,(byte) 0,(byte) 127,(byte) -16,(byte) 0,(byte) 63,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -64,(byte) 7,(byte) -1,(byte) -1,(byte) 0,(byte) 31,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) 0,(byte) 63,(byte) -1,(byte) -1,(byte) -32,(byte) 7,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -2,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 3,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -4,(byte) 3,(byte) -1,(byte) -1,(byte) -1,(byte) -2,(byte) 1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -8,(byte) 7,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) 0,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -16,(byte) 31,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -64,(byte) 127,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -32,(byte) 63,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -32,(byte) 63,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -64,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 31,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -128,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 15,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -4,(byte) 15,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) 3,(byte) -1,(byte) -1,(byte) -16,(byte) 7,(byte) -1,(byte) -2,(byte) 7,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) 7,(byte) -1,(byte) -1,(byte) 0,(byte) 1,(byte) -1,(byte) -1,(byte) 3,(byte) -8,(byte) 0,(byte) 0,(byte) -2,(byte) 7,(byte) -1,(byte) -4,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) 3,(byte) -8,(byte) 0,(byte) 0,(byte) -4,(byte) 15,(byte) -1,(byte) -32,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -127,(byte) -8,(byte) 0,(byte) 0,(byte) -4,(byte) 15,(byte) -1,(byte) -64,(byte) 7,(byte) -32,(byte) 127,(byte) -1,(byte) -63,(byte) -8,(byte) 0,(byte) 0,(byte) -4,(byte) 31,(byte) -1,(byte) -128,(byte) 127,(byte) -16,(byte) 63,(byte) -1,(byte) -64,(byte) -8,(byte) 0,(byte) 0,(byte) -8,(byte) 63,(byte) -1,(byte) 3,(byte) -1,(byte) -8,(byte) 63,(byte) -1,(byte) -32,(byte) -8,(byte) 0,(byte) 0,(byte) -8,(byte) 63,(byte) -4,(byte) 15,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -32,(byte) -8,(byte) 0,(byte) 0,(byte) -8,(byte) 63,(byte) -8,(byte) 31,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -32,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -8,(byte) 31,(byte) -1,(byte) -2,(byte) 63,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -4,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -25,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -61,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -61,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -25,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -32,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 56,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -16,(byte) 127,(byte) -1,(byte) 31,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 120,(byte) 0,(byte) 0,(byte) -8,(byte) 63,(byte) -2,(byte) 31,(byte) -1,(byte) -2,(byte) 63,(byte) -1,(byte) -32,(byte) 120,(byte) 0,(byte) 0,(byte) -8,(byte) 63,(byte) -2,(byte) 31,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -32,(byte) -8,(byte) 0,(byte) 0,(byte) -8,(byte) 63,(byte) -2,(byte) 31,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -32,(byte) -8,(byte) 0,(byte) 0,(byte) -4,(byte) 31,(byte) -2,(byte) 31,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -64,(byte) -8,(byte) 0,(byte) 0,(byte) -4,(byte) 15,(byte) -2,(byte) 31,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -127,(byte) -8,(byte) 0,(byte) 0,(byte) -4,(byte) 15,(byte) -2,(byte) 31,(byte) -1,(byte) -4,(byte) 63,(byte) -1,(byte) -127,(byte) -8,(byte) 0,(byte) 0,(byte) -2,(byte) 7,(byte) -2,(byte) 31,(byte) -1,(byte) -2,(byte) 63,(byte) -1,(byte) 3,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) 7,(byte) -2,(byte) 31,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) 3,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) 3,(byte) -1,(byte) 31,(byte) -1,(byte) -1,(byte) -1,(byte) -2,(byte) 7,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -4,(byte) 15,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -128,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 15,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -64,(byte) 127,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -16,(byte) 31,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -32,(byte) 63,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -32,(byte) 63,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -16,(byte) 31,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -64,(byte) 127,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -8,(byte) 7,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) 0,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -4,(byte) 3,(byte) -1,(byte) -1,(byte) -1,(byte) -2,(byte) 1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -2,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 3,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) 0,(byte) 63,(byte) -1,(byte) -1,(byte) -32,(byte) 7,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -64,(byte) 7,(byte) -1,(byte) -1,(byte) 0,(byte) 31,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -32,(byte) 0,(byte) 127,(byte) -16,(byte) 0,(byte) 63,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -2,(byte) 0,(byte) 0,(byte) 0,(byte) 3,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -128,(byte) 0,(byte) 0,(byte) 15,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -64,(byte) 31,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -1,(byte) -8,(byte) 0,(byte) 0};
	
	public static short GetTotalLength() {
		return (short)(naam.length + adres.length + land.length + geboortedatum.length + leeftijd.length + geslacht.length + endOfAttributes.length/* + foto.length*/);
	}
	
	public static byte[] GeteGovAtributes() {
		byte[] output = new byte[GetTotalLength()];
		byte offset = 0;
		
		Util.arrayCopy(naam, (short)0, output, offset, (short)naam.length);
		offset += naam.length;
		
		Util.arrayCopy(adres, (short)0, output, offset, (short)adres.length);
		offset += adres.length;
		
		Util.arrayCopy(land, (short)0, output, offset, (short)land.length);
		offset += land.length;
		
		Util.arrayCopy(geboortedatum, (short)0, output, offset, (short)geboortedatum.length);
		offset += geboortedatum.length;
		
		Util.arrayCopy(leeftijd, (short)0, output, offset, (short)leeftijd.length);
		offset += leeftijd.length;
		
		Util.arrayCopy(geslacht, (short)0, output, offset, (short)geslacht.length);
		offset += geslacht.length;		
		
		//Util.arrayCopy(foto, (short)0, output, offset, (short)foto.length);
		//offset += foto.length;
		
		Util.arrayCopy(endOfAttributes, (short)0, output, offset, (short)endOfAttributes.length);
		offset += endOfAttributes.length;
		return output;
	}
	
	public static byte[] GetSocialAtributes() {
		byte[] output = new byte[naam.length + land.length + leeftijd.length + geslacht.length + endOfAttributes.length];
		byte offset = 0;
		
		Util.arrayCopy(naam, (short)0, output, offset, (short)naam.length);
		offset += naam.length;
		
		Util.arrayCopy(land, (short)0, output, offset, (short)land.length);
		offset += land.length;
		
		Util.arrayCopy(leeftijd, (short)0, output, offset, (short)leeftijd.length);
		offset += leeftijd.length;
		
		Util.arrayCopy(geslacht, (short)0, output, offset, (short)geslacht.length);
		offset += geslacht.length;		
		
		//Util.arrayCopy(foto, (short)0, output, offset, (short)foto.length);
		//offset += foto.length;
		
		Util.arrayCopy(endOfAttributes, (short)0, output, offset, (short)endOfAttributes.length);
		offset += endOfAttributes.length;
		
		return output;
	}
	
	public static byte[] GetDefaultAtributes() {
		byte[] output = new byte[leeftijd.length + endOfAttributes.length];
		byte offset = 0;
		
		Util.arrayCopy(leeftijd, (short)0, output, offset, (short)leeftijd.length);
		offset += leeftijd.length;
		
		Util.arrayCopy(endOfAttributes, (short)0, output, offset, (short)endOfAttributes.length);
		offset += endOfAttributes.length;
		return output;
	}
	
}
